using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._AnalysisTools._Statistics
{
    /// <summary>
    /// <para>Summarize Nearby</para>
    /// <para>Finds features that are within a specified distance of features in the input layer and calculates statistics for the nearby features. Distance can be measured as a straight-line distance, a drive-time distance (for example, within 10 minutes), or a drive distance (within 5 kilometers). Drive-time and drive distance measurements require that you are logged in to an  ArcGIS Online organizational account with Network Analysis privileges, and they consume credits.</para>
    /// <para>查找输入图层中要素的指定距离内的要素，并计算附近要素的统计数据。距离可以测量为直线距离、行驶时间距离（例如，10 分钟内）或行驶距离（5 公里以内）。行驶时间和行驶距离测量要求您登录到具有网络分析权限的 ArcGIS Online 组织帐户，并且它们会消耗配额。</para>
    /// </summary>    
    [DisplayName("Summarize Nearby")]
    public class SummarizeNearby : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public SummarizeNearby()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_features">
        /// <para>Input Features</para>
        /// <para>The point, line, or polygon features that will be buffered and those buffers used to summarize the input summary features.</para>
        /// <para>将缓冲的点、线或面要素，以及用于汇总输入汇总要素的缓冲区。</para>
        /// </param>
        /// <param name="_in_sum_features">
        /// <para>Input Summary Features</para>
        /// <para>The point, line, or polygon features that will be summarized.</para>
        /// <para>将要汇总的点、线或面要素。</para>
        /// </param>
        /// <param name="_out_feature_class">
        /// <para>Output Feature Class</para>
        /// <para>The output polygon feature class containing the buffered input features, the attributes of the input features, and new attributes about the number points, length of lines, and area of polygons inside each buffer and statistics about those features.</para>
        /// <para>输出面要素类，包含缓冲输入要素、输入要素的属性、有关每个缓冲区内面的数点、线长度和面面积的新属性以及有关这些要素的统计数据。</para>
        /// </param>
        /// <param name="_distance_type">
        /// <para>Distance Measurement</para>
        /// <para><xdoc>
        ///   <para>Defines what kind of distance measurement to use in generating buffer areas around the input features. Both driving distance and driving time use the road network and honor such restrictions as one-way streets. Driving time honors the current posted speed limits.</para>
        ///   <para>To use the drive-time and drive distance measurement options you must be logged in to an ArcGIS Online organizational account with Network Analysis privileges. Each time the tool runs successfully, service credits are debited from your subscription based on the service used and the results returned from the service. The ArcGIS Online service credits page provides details about service credits.</para>
        ///   <para>All distance types except straight-line distance use ArcGIS Online routing and network services.</para>
        ///   <bulletList>
        ///     <bullet_item>Driving distance—The distance covered in a car or other similar small automobiles, such as pickup trucks. Travel follows all rules that are specific to cars.</bullet_item><para/>
        ///     <bullet_item>Driving time—The distance covered within a specified time in a car or other similar small automobiles, such as pickup trucks. Dynamic travel speeds based on traffic are used where it is available when you specify a time of day. Travel follows all rules that are specific to cars.</bullet_item><para/>
        ///     <bullet_item>Straight line—Euclidean or straight-line distance.</bullet_item><para/>
        ///     <bullet_item>Trucking distance—The distance covered along designated truck routes. Travel follows all rules for cars as well as rules specific to trucking.</bullet_item><para/>
        ///     <bullet_item>Trucking time—The distance covered within a specified time when traveling along designated truck routes. Dynamic travel speeds based on traffic are used where it is available when you specify a time of day. Travel follows all rules for cars as well as rules specific to trucking.</bullet_item><para/>
        ///     <bullet_item>Walking distance—The distance covered along paths and roads that allow pedestrian traffic.</bullet_item><para/>
        ///     <bullet_item>Walking time—The distance covered within a specified time when walking along paths and roads that allow pedestrian traffic.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>定义在输入要素周围生成缓冲区时要使用的距离测量类型。行车距离和行车时间都使用道路网络，并遵守单行道等限制。驾驶时间遵守当前公布的速度限制。</para>
        ///   <para>要使用行驶时间和行驶距离测量选项，您必须登录到具有网络分析权限的 ArcGIS Online 组织帐户。每次工具成功运行时，都会根据所使用的服务和服务返回的结果从订阅中扣除服务费减免。ArcGIS Online 服务配额页面提供了有关服务配额的详细信息。</para>
        ///   <para>除直线距离外，所有距离类型均使用 ArcGIS Online 路径和网络服务。</para>
        ///   <bulletList>
        ///     <bullet_item>行驶距离 - 汽车或其他类似小型汽车（如皮卡车）行驶的距离。旅行遵循特定于汽车的所有规则。</bullet_item><para/>
        ///     <bullet_item>行驶时间 - 汽车或其他类似小型汽车（如皮卡车）在指定时间内行驶的距离。当您指定一天中的时间时，将使用基于交通的动态行驶速度。旅行遵循特定于汽车的所有规则。</bullet_item><para/>
        ///     <bullet_item>直线 - 欧几里得距离或直线距离。</bullet_item><para/>
        ///     <bullet_item>卡车运输距离 - 沿指定卡车路线行驶的距离。旅行遵循汽车的所有规则以及卡车运输的特定规则。</bullet_item><para/>
        ///     <bullet_item>卡车运输时间 - 沿指定卡车路线行驶时在指定时间内行驶的距离。当您指定一天中的时间时，将使用基于交通的动态行驶速度。旅行遵循汽车的所有规则以及卡车运输的特定规则。</bullet_item><para/>
        ///     <bullet_item>步行距离 - 沿允许行人通行的路径和道路所覆盖的距离。</bullet_item><para/>
        ///     <bullet_item>步行时间 - 沿着允许行人通行的路径和道路行走时在指定时间内走过的距离。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        /// <param name="_distances">
        /// <para>Distances</para>
        /// <para><xdoc>
        ///   <para>Distance values define a search distance (for straight-line, driving, trucking, or walking distance) or travel time (for driving, trucking, or walking time). Features that are within (or equal to) the distances you enter will be summarized.</para>
        ///   <para>Multiple values can be specified. One area around each input feature will be generated for each distance.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>距离值定义搜索距离（直线距离、驾驶距离、卡车运输距离或步行距离）或行驶时间（驾驶距离、卡车运输距离或步行距离）。将汇总在您输入的距离范围内（或等于）的要素。</para>
        ///   <para>可以指定多个值。对于每个距离，将生成每个输入要素周围的一个区域。</para>
        /// </xdoc></para>
        /// </param>
        /// <param name="_distance_units">
        /// <para>Distance Units</para>
        /// <para><xdoc>
        ///   <para>The units of the distance values.</para>
        ///   <bulletList>
        ///     <bullet_item>Miles—Miles</bullet_item><para/>
        ///     <bullet_item>Kilometers—Kilometers</bullet_item><para/>
        ///     <bullet_item>Feet—Feet</bullet_item><para/>
        ///     <bullet_item>Yards—Yards</bullet_item><para/>
        ///     <bullet_item>Meters—Meters</bullet_item><para/>
        ///     <bullet_item>Hours—Hours</bullet_item><para/>
        ///     <bullet_item>Minutes—Minutes</bullet_item><para/>
        ///     <bullet_item>Seconds—Seconds</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>距离值的单位。</para>
        ///   <bulletList>
        ///     <bullet_item>英里 - 英里</bullet_item><para/>
        ///     <bullet_item>公里 - 公里</bullet_item><para/>
        ///     <bullet_item>英尺 - 英尺</bullet_item><para/>
        ///     <bullet_item>码 - 码</bullet_item><para/>
        ///     <bullet_item>米 - 米</bullet_item><para/>
        ///     <bullet_item>小时 - 小时</bullet_item><para/>
        ///     <bullet_item>分钟 - 分钟</bullet_item><para/>
        ///     <bullet_item>秒 - 秒</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        public SummarizeNearby(object _in_features, object _in_sum_features, object _out_feature_class, _distance_type_value? _distance_type, List<object> _distances, _distance_units_value? _distance_units)
        {
            this._in_features = _in_features;
            this._in_sum_features = _in_sum_features;
            this._out_feature_class = _out_feature_class;
            this._distance_type = _distance_type;
            this._distances = _distances;
            this._distance_units = _distance_units;
        }
        public override string ToolboxName => "Analysis Tools";

        public override string ToolName => "Summarize Nearby";

        public override string CallName => "analysis.SummarizeNearby";

        public override List<string> AcceptEnvironments => ["XYDomain", "XYResolution", "XYTolerance", "ZDomain", "ZResolution", "ZTolerance", "extent", "geographicTransformations", "outputCoordinateSystem", "outputZFlag", "outputZValue", "scratchWorkspace", "workspace"];

        public override object[] ParameterInfo => [_in_features, _in_sum_features, _out_feature_class, _distance_type.GetGPValue(), _distances, _distance_units.GetGPValue(), _time_of_day, _time_zone.GetGPValue(), _keep_all_polygons.GetGPValue(), _sum_fields, _sum_shape.GetGPValue(), _shape_unit.GetGPValue(), _group_field, _add_min_maj.GetGPValue(), _add_group_percent.GetGPValue(), _Output_Grouped_Table];

        /// <summary>
        /// <para>Input Features</para>
        /// <para>The point, line, or polygon features that will be buffered and those buffers used to summarize the input summary features.</para>
        /// <para>将缓冲的点、线或面要素，以及用于汇总输入汇总要素的缓冲区。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_features { get; set; }


        /// <summary>
        /// <para>Input Summary Features</para>
        /// <para>The point, line, or polygon features that will be summarized.</para>
        /// <para>将要汇总的点、线或面要素。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Summary Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_sum_features { get; set; }


        /// <summary>
        /// <para>Output Feature Class</para>
        /// <para>The output polygon feature class containing the buffered input features, the attributes of the input features, and new attributes about the number points, length of lines, and area of polygons inside each buffer and statistics about those features.</para>
        /// <para>输出面要素类，包含缓冲输入要素、输入要素的属性、有关每个缓冲区内面的数点、线长度和面面积的新属性以及有关这些要素的统计数据。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_feature_class { get; set; }


        /// <summary>
        /// <para>Distance Measurement</para>
        /// <para><xdoc>
        ///   <para>Defines what kind of distance measurement to use in generating buffer areas around the input features. Both driving distance and driving time use the road network and honor such restrictions as one-way streets. Driving time honors the current posted speed limits.</para>
        ///   <para>To use the drive-time and drive distance measurement options you must be logged in to an ArcGIS Online organizational account with Network Analysis privileges. Each time the tool runs successfully, service credits are debited from your subscription based on the service used and the results returned from the service. The ArcGIS Online service credits page provides details about service credits.</para>
        ///   <para>All distance types except straight-line distance use ArcGIS Online routing and network services.</para>
        ///   <bulletList>
        ///     <bullet_item>Driving distance—The distance covered in a car or other similar small automobiles, such as pickup trucks. Travel follows all rules that are specific to cars.</bullet_item><para/>
        ///     <bullet_item>Driving time—The distance covered within a specified time in a car or other similar small automobiles, such as pickup trucks. Dynamic travel speeds based on traffic are used where it is available when you specify a time of day. Travel follows all rules that are specific to cars.</bullet_item><para/>
        ///     <bullet_item>Straight line—Euclidean or straight-line distance.</bullet_item><para/>
        ///     <bullet_item>Trucking distance—The distance covered along designated truck routes. Travel follows all rules for cars as well as rules specific to trucking.</bullet_item><para/>
        ///     <bullet_item>Trucking time—The distance covered within a specified time when traveling along designated truck routes. Dynamic travel speeds based on traffic are used where it is available when you specify a time of day. Travel follows all rules for cars as well as rules specific to trucking.</bullet_item><para/>
        ///     <bullet_item>Walking distance—The distance covered along paths and roads that allow pedestrian traffic.</bullet_item><para/>
        ///     <bullet_item>Walking time—The distance covered within a specified time when walking along paths and roads that allow pedestrian traffic.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>定义在输入要素周围生成缓冲区时要使用的距离测量类型。行车距离和行车时间都使用道路网络，并遵守单行道等限制。驾驶时间遵守当前公布的速度限制。</para>
        ///   <para>要使用行驶时间和行驶距离测量选项，您必须登录到具有网络分析权限的 ArcGIS Online 组织帐户。每次工具成功运行时，都会根据所使用的服务和服务返回的结果从订阅中扣除服务费减免。ArcGIS Online 服务配额页面提供了有关服务配额的详细信息。</para>
        ///   <para>除直线距离外，所有距离类型均使用 ArcGIS Online 路径和网络服务。</para>
        ///   <bulletList>
        ///     <bullet_item>行驶距离 - 汽车或其他类似小型汽车（如皮卡车）行驶的距离。旅行遵循特定于汽车的所有规则。</bullet_item><para/>
        ///     <bullet_item>行驶时间 - 汽车或其他类似小型汽车（如皮卡车）在指定时间内行驶的距离。当您指定一天中的时间时，将使用基于交通的动态行驶速度。旅行遵循特定于汽车的所有规则。</bullet_item><para/>
        ///     <bullet_item>直线 - 欧几里得距离或直线距离。</bullet_item><para/>
        ///     <bullet_item>卡车运输距离 - 沿指定卡车路线行驶的距离。旅行遵循汽车的所有规则以及卡车运输的特定规则。</bullet_item><para/>
        ///     <bullet_item>卡车运输时间 - 沿指定卡车路线行驶时在指定时间内行驶的距离。当您指定一天中的时间时，将使用基于交通的动态行驶速度。旅行遵循汽车的所有规则以及卡车运输的特定规则。</bullet_item><para/>
        ///     <bullet_item>步行距离 - 沿允许行人通行的路径和道路所覆盖的距离。</bullet_item><para/>
        ///     <bullet_item>步行时间 - 沿着允许行人通行的路径和道路行走时在指定时间内走过的距离。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Distance Measurement")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _distance_type_value? _distance_type { get; set; }

        public enum _distance_type_value
        {
            /// <summary>
            /// <para>Driving distance</para>
            /// <para>Driving distance—The distance covered in a car or other similar small automobiles, such as pickup trucks. Travel follows all rules that are specific to cars.</para>
            /// <para>行驶距离 - 汽车或其他类似小型汽车（如皮卡车）行驶的距离。旅行遵循特定于汽车的所有规则。</para>
            /// </summary>
            [Description("Driving distance")]
            [GPEnumValue("DRIVING_DISTANCE")]
            _DRIVING_DISTANCE,

            /// <summary>
            /// <para>Driving time</para>
            /// <para>Driving time—The distance covered within a specified time in a car or other similar small automobiles, such as pickup trucks. Dynamic travel speeds based on traffic are used where it is available when you specify a time of day. Travel follows all rules that are specific to cars.</para>
            /// <para>行驶时间 - 汽车或其他类似小型汽车（如皮卡车）在指定时间内行驶的距离。当您指定一天中的时间时，将使用基于交通的动态行驶速度。旅行遵循特定于汽车的所有规则。</para>
            /// </summary>
            [Description("Driving time")]
            [GPEnumValue("DRIVING_TIME")]
            _DRIVING_TIME,

            /// <summary>
            /// <para>Straight line</para>
            /// <para>Straight line—Euclidean or straight-line distance.</para>
            /// <para>直线 - 欧几里得距离或直线距离。</para>
            /// </summary>
            [Description("Straight line")]
            [GPEnumValue("STRAIGHT_LINE")]
            _STRAIGHT_LINE,

            /// <summary>
            /// <para>Trucking distance</para>
            /// <para>Trucking distance—The distance covered along designated truck routes. Travel follows all rules for cars as well as rules specific to trucking.</para>
            /// <para>卡车运输距离 - 沿指定卡车路线行驶的距离。旅行遵循汽车的所有规则以及卡车运输的特定规则。</para>
            /// </summary>
            [Description("Trucking distance")]
            [GPEnumValue("TRUCKING_DISTANCE")]
            _TRUCKING_DISTANCE,

            /// <summary>
            /// <para>Trucking time</para>
            /// <para>Trucking time—The distance covered within a specified time when traveling along designated truck routes. Dynamic travel speeds based on traffic are used where it is available when you specify a time of day. Travel follows all rules for cars as well as rules specific to trucking.</para>
            /// <para>卡车运输时间 - 沿指定卡车路线行驶时在指定时间内行驶的距离。当您指定一天中的时间时，将使用基于交通的动态行驶速度。旅行遵循汽车的所有规则以及卡车运输的特定规则。</para>
            /// </summary>
            [Description("Trucking time")]
            [GPEnumValue("TRUCKING_TIME")]
            _TRUCKING_TIME,

            /// <summary>
            /// <para>Walking distance</para>
            /// <para>Walking distance—The distance covered along paths and roads that allow pedestrian traffic.</para>
            /// <para>步行距离 - 沿允许行人通行的路径和道路所覆盖的距离。</para>
            /// </summary>
            [Description("Walking distance")]
            [GPEnumValue("WALKING_DISTANCE")]
            _WALKING_DISTANCE,

            /// <summary>
            /// <para>Walking time</para>
            /// <para>Walking time—The distance covered within a specified time when walking along paths and roads that allow pedestrian traffic.</para>
            /// <para>步行时间 - 沿着允许行人通行的路径和道路行走时在指定时间内走过的距离。</para>
            /// </summary>
            [Description("Walking time")]
            [GPEnumValue("WALKING_TIME")]
            _WALKING_TIME,

        }

        /// <summary>
        /// <para>Distances</para>
        /// <para><xdoc>
        ///   <para>Distance values define a search distance (for straight-line, driving, trucking, or walking distance) or travel time (for driving, trucking, or walking time). Features that are within (or equal to) the distances you enter will be summarized.</para>
        ///   <para>Multiple values can be specified. One area around each input feature will be generated for each distance.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>距离值定义搜索距离（直线距离、驾驶距离、卡车运输距离或步行距离）或行驶时间（驾驶距离、卡车运输距离或步行距离）。将汇总在您输入的距离范围内（或等于）的要素。</para>
        ///   <para>可以指定多个值。对于每个距离，将生成每个输入要素周围的一个区域。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Distances")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public List<object> _distances { get; set; }


        /// <summary>
        /// <para>Distance Units</para>
        /// <para><xdoc>
        ///   <para>The units of the distance values.</para>
        ///   <bulletList>
        ///     <bullet_item>Miles—Miles</bullet_item><para/>
        ///     <bullet_item>Kilometers—Kilometers</bullet_item><para/>
        ///     <bullet_item>Feet—Feet</bullet_item><para/>
        ///     <bullet_item>Yards—Yards</bullet_item><para/>
        ///     <bullet_item>Meters—Meters</bullet_item><para/>
        ///     <bullet_item>Hours—Hours</bullet_item><para/>
        ///     <bullet_item>Minutes—Minutes</bullet_item><para/>
        ///     <bullet_item>Seconds—Seconds</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>距离值的单位。</para>
        ///   <bulletList>
        ///     <bullet_item>英里 - 英里</bullet_item><para/>
        ///     <bullet_item>公里 - 公里</bullet_item><para/>
        ///     <bullet_item>英尺 - 英尺</bullet_item><para/>
        ///     <bullet_item>码 - 码</bullet_item><para/>
        ///     <bullet_item>米 - 米</bullet_item><para/>
        ///     <bullet_item>小时 - 小时</bullet_item><para/>
        ///     <bullet_item>分钟 - 分钟</bullet_item><para/>
        ///     <bullet_item>秒 - 秒</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Distance Units")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _distance_units_value? _distance_units { get; set; }

        public enum _distance_units_value
        {
            /// <summary>
            /// <para>Meters</para>
            /// <para>Meters—Meters</para>
            /// <para>米 - 米</para>
            /// </summary>
            [Description("Meters")]
            [GPEnumValue("METERS")]
            _METERS,

            /// <summary>
            /// <para>Kilometers</para>
            /// <para>Kilometers—Kilometers</para>
            /// <para>公里 - 公里</para>
            /// </summary>
            [Description("Kilometers")]
            [GPEnumValue("KILOMETERS")]
            _KILOMETERS,

            /// <summary>
            /// <para>Feet</para>
            /// <para>Feet—Feet</para>
            /// <para>英尺 - 英尺</para>
            /// </summary>
            [Description("Feet")]
            [GPEnumValue("FEET")]
            _FEET,

            /// <summary>
            /// <para>Yards</para>
            /// <para>Yards—Yards</para>
            /// <para>码 - 码</para>
            /// </summary>
            [Description("Yards")]
            [GPEnumValue("YARDS")]
            _YARDS,

            /// <summary>
            /// <para>Miles</para>
            /// <para>Miles—Miles</para>
            /// <para>英里 - 英里</para>
            /// </summary>
            [Description("Miles")]
            [GPEnumValue("MILES")]
            _MILES,

            /// <summary>
            /// <para>Seconds</para>
            /// <para>Seconds—Seconds</para>
            /// <para>秒 - 秒</para>
            /// </summary>
            [Description("Seconds")]
            [GPEnumValue("SECONDS")]
            _SECONDS,

            /// <summary>
            /// <para>Minutes</para>
            /// <para>Minutes—Minutes</para>
            /// <para>分钟 - 分钟</para>
            /// </summary>
            [Description("Minutes")]
            [GPEnumValue("MINUTES")]
            _MINUTES,

            /// <summary>
            /// <para>Hours</para>
            /// <para>Hours—Hours</para>
            /// <para>小时 - 小时</para>
            /// </summary>
            [Description("Hours")]
            [GPEnumValue("HOURS")]
            _HOURS,

        }

        /// <summary>
        /// <para>Time of Day</para>
        /// <para><xdoc>
        ///   <para>Specify whether travel times should consider traffic conditions. Traffic conditions, especially in urbanized areas, can significantly impact the area covered within a specified travel time. If no date or time is specified, the distance covered during a specified travel time will not be impacted by traffic.</para>
        ///   <para>Traffic conditions may be live or typical (historical) based on the date and time specified for this parameter. Esri saves live traffic data for 12 hours and references predictive data extending 12 hours into the future. If the time and date you specify is within the 24-hour time window, live traffic is used. If it is outside the time window, typical or historic traffic is used.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定行驶时间是否应考虑交通状况。交通状况，尤其是在城市化地区，会对指定旅行时间内所覆盖的区域产生重大影响。如果未指定日期或时间，则在指定行程时间内行驶的距离不会受到交通的影响。</para>
        ///   <para>根据为此参数指定的日期和时间，流量状况可以是实时的，也可以是典型的（历史）。Esri 将实时流量数据保存 12 小时，并参考未来 12 小时的预测数据。如果您指定的时间和日期在 24 小时时间窗口内，则使用实时流量。如果在时间窗口之外，则使用典型流量或历史流量。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time of Day")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _time_of_day { get; set; } = null;


        /// <summary>
        /// <para>Time Zone</para>
        /// <para><xdoc>
        ///   <para>The time zone for the specified time of day. Time zones can be specified in local time or Coordinated Universal Time (UTC).</para>
        ///   <bulletList>
        ///     <bullet_item>Geolocal—The time of day refers to the local time zone or zones in which the input features are located. This option can cause the analysis to have rolling start times across time zones. This is the default.For example, setting a geolocal time of day to 9:00 a.m. causes the drive times for points in the Eastern Time Zone to start at 9:00 a.m. Eastern Time, and 9:00 a.m. Central Time for points in the Central Time Zone. (The start times are offset by an hour in real or UTC time.)</bullet_item><para/>
        ///     <bullet_item>UTC—The time of day refers to Coordinated Universal Time (UTC). The start times for all points are simultaneous, regardless of time zones.For example, setting a UTC time of day to 9:00 a.m. causes the drive times for points in the Eastern Time Zone to start at 4:00 a.m. Eastern Time, and 3:00 a.m. Central Time for points in the Central Time Zone. (The start times are simultaneous.)</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>一天中指定时间的时区。时区可以指定为本地时间或协调世界时 （UTC）。</para>
        ///   <bulletList>
        ///     <bullet_item>地理本地 - 一天中的时间是指输入要素所在的一个或多个本地时区。此选项可导致分析具有跨时区的滚动开始时间。这是默认设置。例如，将一天中的地理本地时间设置为上午 9：00，会导致东部时区中点的行驶时间从东部时间上午 9：00 开始，中部时区点的行驶时间从中部时间上午 9：00 开始。（开始时间以实际时间或 UTC 时间偏移一小时。</bullet_item><para/>
        ///     <bullet_item>UTC - 一天中的时间是指协调世界时 （UTC）。无论时区如何，所有点的开始时间都是同时的。例如，将一天中的 UTC 时间设置为上午 9：00，会导致东部时区中点的行驶时间从东部时间凌晨 4：00 开始，中部时区点的行驶时间从中部时间凌晨 3：00 开始。（开始时间是同时进行的。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Zone")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _time_zone_value _time_zone { get; set; } = _time_zone_value._GEOLOCAL;

        public enum _time_zone_value
        {
            /// <summary>
            /// <para>UTC</para>
            /// <para>UTC—The time of day refers to Coordinated Universal Time (UTC). The start times for all points are simultaneous, regardless of time zones.For example, setting a UTC time of day to 9:00 a.m. causes the drive times for points in the Eastern Time Zone to start at 4:00 a.m. Eastern Time, and 3:00 a.m. Central Time for points in the Central Time Zone. (The start times are simultaneous.)</para>
            /// <para>UTC - 一天中的时间是指协调世界时 （UTC）。无论时区如何，所有点的开始时间都是同时的。例如，将一天中的 UTC 时间设置为上午 9：00，会导致东部时区中点的行驶时间从东部时间凌晨 4：00 开始，中部时区点的行驶时间从中部时间凌晨 3：00 开始。（开始时间是同时进行的。</para>
            /// </summary>
            [Description("UTC")]
            [GPEnumValue("UTC")]
            _UTC,

            /// <summary>
            /// <para>Geolocal</para>
            /// <para>Geolocal—The time of day refers to the local time zone or zones in which the input features are located. This option can cause the analysis to have rolling start times across time zones. This is the default.For example, setting a geolocal time of day to 9:00 a.m. causes the drive times for points in the Eastern Time Zone to start at 9:00 a.m. Eastern Time, and 9:00 a.m. Central Time for points in the Central Time Zone. (The start times are offset by an hour in real or UTC time.)</para>
            /// <para>地理本地 - 一天中的时间是指输入要素所在的一个或多个本地时区。此选项可导致分析具有跨时区的滚动开始时间。这是默认设置。例如，将一天中的地理本地时间设置为上午 9：00，会导致东部时区中点的行驶时间从东部时间上午 9：00 开始，中部时区点的行驶时间从中部时间上午 9：00 开始。（开始时间以实际时间或 UTC 时间偏移一小时。</para>
            /// </summary>
            [Description("Geolocal")]
            [GPEnumValue("GEOLOCAL")]
            _GEOLOCAL,

        }

        /// <summary>
        /// <para>Keep polygons with no points</para>
        /// <para><xdoc>
        ///   <para>Determines if all buffers of the input features or only those intersecting or containing at least one input summary feature will be copied to the output feature class.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—All buffers will be copied to the output feature class. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Only buffers that intersect or contain at least one input summary feature will be copied to the output feature class.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>确定是将输入要素的所有缓冲区还是仅与至少一个输入汇总要素相交或包含的缓冲区复制到输出要素类。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 所有缓冲区都将复制到输出要素类。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中 - 仅将与至少一个输入汇总要素相交或包含至少一个输入汇总要素的缓冲区复制到输出要素类。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Keep polygons with no points")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _keep_all_polygons_value _keep_all_polygons { get; set; } = _keep_all_polygons_value._true;

        public enum _keep_all_polygons_value
        {
            /// <summary>
            /// <para>KEEP_ALL</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("KEEP_ALL")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>ONLY_INTERSECTING</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ONLY_INTERSECTING")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Summary Fields</para>
        /// <para><xdoc>
        ///   <para>A list of attribute field names from the input summary features and statistical summary types you want to calculate for those attribute fields for all points within each input feature buffer.</para>
        ///   <para>Summary fields must be numeric. Text and other attribute field types are not supported.</para>
        ///   <para>Statistic types include the following:
        ///   <bulletList>
        ///     <bullet_item>Sum—Adds the total value of all the points in each buffer.  </bullet_item><para/>
        ///     <bullet_item>Mean—Calculates the average of all the points in each buffer.  </bullet_item><para/>
        ///     <bullet_item>Min—Finds the smallest value of all the points in each buffer.  </bullet_item><para/>
        ///     <bullet_item>Max—Finds the largest value of all the points in each buffer.  </bullet_item><para/>
        ///     <bullet_item>Stddev—Finds the standard deviation of all the points in each buffer.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要为每个输入要素缓冲区内所有点的这些属性字段计算的输入汇总要素和统计汇总类型的属性字段名称列表。</para>
        ///   <para>摘要字段必须为数字。不支持文本和其他属性字段类型。</para>
        /// <para>统计类型包括：
        ///   <bulletList>
        ///     <bullet_item>Sum - 将每个缓冲区中所有点的总值相加。</bullet_item><para/>
        ///     <bullet_item>平均值 （Mean） - 计算每个缓冲区中所有点的平均值。</bullet_item><para/>
        ///     <bullet_item>最小值 （Min） - 查找每个缓冲区中所有点的最小值。</bullet_item><para/>
        ///     <bullet_item>最大值 （Max） - 查找每个缓冲区中所有点的最大值。</bullet_item><para/>
        ///     <bullet_item>Stddev - 查找每个缓冲区中所有点的标准差。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Summary Fields")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _sum_fields { get; set; } = null;


        /// <summary>
        /// <para>Add shape summary  attributes</para>
        /// <para><xdoc>
        ///   <para>Determines if the output feature class will contain attributes for the number of points, length of lines, and area of polygon features summarized in each input feature buffer.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Add shape summary attributes to the output feature class. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Do not add shape summary attributes to the output feature class.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>确定输出要素类是否包含每个输入要素缓冲区中汇总的面要素的点数、线长度和面积的属性。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 将形状汇总属性添加到输出要素类。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中 - 不向输出要素类添加形状汇总属性。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Add shape summary  attributes")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _sum_shape_value _sum_shape { get; set; } = _sum_shape_value._true;

        public enum _sum_shape_value
        {
            /// <summary>
            /// <para>ADD_SHAPE_SUM</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ADD_SHAPE_SUM")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_SHAPE_SUM</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_SHAPE_SUM")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Shape Unit</para>
        /// <para><xdoc>
        ///   <para>The unit in which to calculate shape summary attributes. If the input summary features are points, no shape unit is used, since only the count of points within each input feature buffer is added.</para>
        ///   <para>If the input summary features are lines, specify a linear unit. If the input summary features are polygons, specify an areal unit.</para>
        ///   <bulletList>
        ///     <bullet_item>Meters—Meters</bullet_item><para/>
        ///     <bullet_item>Kilometers—Kilometers</bullet_item><para/>
        ///     <bullet_item>Feet—Feet</bullet_item><para/>
        ///     <bullet_item>Yards—Yards</bullet_item><para/>
        ///     <bullet_item>Miles—Miles</bullet_item><para/>
        ///     <bullet_item>Acres—Acres</bullet_item><para/>
        ///     <bullet_item>Hectares—Hectares</bullet_item><para/>
        ///     <bullet_item>Square meters—Square meters</bullet_item><para/>
        ///     <bullet_item>Square kilometers—Square kilometers</bullet_item><para/>
        ///     <bullet_item>Square feet—Square feet</bullet_item><para/>
        ///     <bullet_item>Square yards—Square yards</bullet_item><para/>
        ///     <bullet_item>Square miles—Square miles</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>用于计算形状汇总属性的单位。如果输入汇总要素为点，则不使用形状单位，因为仅添加每个输入要素缓冲区中的点计数。</para>
        ///   <para>如果输入汇总要素为线，则指定线性单位。如果输入汇总要素为面，则指定区域单位。</para>
        ///   <bulletList>
        ///     <bullet_item>米 - 米</bullet_item><para/>
        ///     <bullet_item>公里 - 公里</bullet_item><para/>
        ///     <bullet_item>英尺 - 英尺</bullet_item><para/>
        ///     <bullet_item>码 - 码</bullet_item><para/>
        ///     <bullet_item>英里 - 英里</bullet_item><para/>
        ///     <bullet_item>英亩 - 英亩</bullet_item><para/>
        ///     <bullet_item>公顷 - 公顷</bullet_item><para/>
        ///     <bullet_item>平方米 - 平方米</bullet_item><para/>
        ///     <bullet_item>平方公里 - 平方公里</bullet_item><para/>
        ///     <bullet_item>平方英尺 - 平方英尺</bullet_item><para/>
        ///     <bullet_item>平方码 - 平方码</bullet_item><para/>
        ///     <bullet_item>平方英里 - 平方英里</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Shape Unit")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _shape_unit_value? _shape_unit { get; set; } = null;

        public enum _shape_unit_value
        {
            /// <summary>
            /// <para>Meters</para>
            /// <para>Meters—Meters</para>
            /// <para>米 - 米</para>
            /// </summary>
            [Description("Meters")]
            [GPEnumValue("METERS")]
            _METERS,

            /// <summary>
            /// <para>Kilometers</para>
            /// <para>Kilometers—Kilometers</para>
            /// <para>公里 - 公里</para>
            /// </summary>
            [Description("Kilometers")]
            [GPEnumValue("KILOMETERS")]
            _KILOMETERS,

            /// <summary>
            /// <para>Feet</para>
            /// <para>Feet—Feet</para>
            /// <para>英尺 - 英尺</para>
            /// </summary>
            [Description("Feet")]
            [GPEnumValue("FEET")]
            _FEET,

            /// <summary>
            /// <para>Yards</para>
            /// <para>Yards—Yards</para>
            /// <para>码 - 码</para>
            /// </summary>
            [Description("Yards")]
            [GPEnumValue("YARDS")]
            _YARDS,

            /// <summary>
            /// <para>Miles</para>
            /// <para>Miles—Miles</para>
            /// <para>英里 - 英里</para>
            /// </summary>
            [Description("Miles")]
            [GPEnumValue("MILES")]
            _MILES,

            /// <summary>
            /// <para>Acres</para>
            /// <para>Acres—Acres</para>
            /// <para>英亩 - 英亩</para>
            /// </summary>
            [Description("Acres")]
            [GPEnumValue("ACRES")]
            _ACRES,

            /// <summary>
            /// <para>Hectares</para>
            /// <para>Hectares—Hectares</para>
            /// <para>公顷 - 公顷</para>
            /// </summary>
            [Description("Hectares")]
            [GPEnumValue("HECTARES")]
            _HECTARES,

            /// <summary>
            /// <para>Square meters</para>
            /// <para>Square meters—Square meters</para>
            /// <para>平方米 - 平方米</para>
            /// </summary>
            [Description("Square meters")]
            [GPEnumValue("SQUAREMETERS")]
            _SQUAREMETERS,

            /// <summary>
            /// <para>Square kilometers</para>
            /// <para>Square kilometers—Square kilometers</para>
            /// <para>平方公里 - 平方公里</para>
            /// </summary>
            [Description("Square kilometers")]
            [GPEnumValue("SQUAREKILOMETERS")]
            _SQUAREKILOMETERS,

            /// <summary>
            /// <para>Square feet</para>
            /// <para>Square feet—Square feet</para>
            /// <para>平方英尺 - 平方英尺</para>
            /// </summary>
            [Description("Square feet")]
            [GPEnumValue("SQUAREFEET")]
            _SQUAREFEET,

            /// <summary>
            /// <para>Square yards</para>
            /// <para>Square yards—Square yards</para>
            /// <para>平方码 - 平方码</para>
            /// </summary>
            [Description("Square yards")]
            [GPEnumValue("SQUAREYARDS")]
            _SQUAREYARDS,

            /// <summary>
            /// <para>Square miles</para>
            /// <para>Square miles—Square miles</para>
            /// <para>平方英里 - 平方英里</para>
            /// </summary>
            [Description("Square miles")]
            [GPEnumValue("SQUAREMILES")]
            _SQUAREMILES,

        }

        /// <summary>
        /// <para>Group Field</para>
        /// <para><xdoc>
        ///   <para>Attribute field from the input summary features used for grouping. Features that have the same group field value will be combined and summarized with other features with the same group field value.</para>
        ///   <para>When you choose a group field, an additional output grouped table will be created and its location must be specified. This output grouped table is required when using a group field.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>用于分组的输入汇总要素中的属性字段。具有相同组字段值的要素将与具有相同组字段值的其他要素进行组合和汇总。</para>
        ///   <para>选择组字段时，将创建一个额外的输出分组表，并且必须指定其位置。使用组字段时，此输出分组表是必需的。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Group Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _group_field { get; set; } = null;


        /// <summary>
        /// <para>Add minority and majority attributes</para>
        /// <para><xdoc>
        ///   <para>This option is only enabled if you have selected a group field. It allows you to determine which group field value is the minority (least dominant) and the majority (most dominant) within each input feature buffer.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Do not add minority and majority fields to the output. This is the default.</bullet_item><para/>
        ///     <bullet_item>Checked—Add minority and majority fields to the output.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>仅当您选择了组字段时，才会启用此选项。它允许您确定哪个组字段值是每个输入要素缓冲区中的少数（最不主要）和多数（最主要）。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中 - 不向输出添加少数和多数字段。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>选中 - 将少数和多数字段添加到输出中。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Add minority and majority attributes")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _add_min_maj_value _add_min_maj { get; set; } = _add_min_maj_value._false;

        public enum _add_min_maj_value
        {
            /// <summary>
            /// <para>ADD_MIN_MAJ</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ADD_MIN_MAJ")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_MIN_MAJ</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_MIN_MAJ")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Add group percentages</para>
        /// <para><xdoc>
        ///   <para>This option is only enabled if you have selected a group field. It allows you to determine the percentage of each attribute value within each group.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Do not add a percentage attribute field to the output. This is the default.</bullet_item><para/>
        ///     <bullet_item>Checked—Add a percentage attribute field to the output.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>仅当您选择了组字段时，才会启用此选项。它允许您确定每个组中每个属性值的百分比。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中 - 不向输出添加百分比属性字段。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>选中 - 将百分比属性字段添加到输出中。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Add group percentages")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _add_group_percent_value _add_group_percent { get; set; } = _add_group_percent_value._false;

        public enum _add_group_percent_value
        {
            /// <summary>
            /// <para>ADD_PERCENT</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ADD_PERCENT")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_PERCENT</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_PERCENT")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Output Grouped Table</para>
        /// <para><xdoc>
        ///   <para>If a group field is specified, the output grouped table is required.</para>
        ///   <para>An output table that includes summary fields for each group of summary features for each input feature buffer. The table will have the following attribute fields:
        ///   <bulletList>
        ///     <bullet_item>Join_ID—An ID corresponding to an ID field added to the output feature class.  </bullet_item><para/>
        ///     <bullet_item>The group field.  </bullet_item><para/>
        ///     <bullet_item>A shape summary field such as count of points or length of lines.  </bullet_item><para/>
        ///     <bullet_item>One field for each of the summary fields.  </bullet_item><para/>
        ///     <bullet_item>Percentage field.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>如果指定了组字段，则输出分组表是必需的。</para>
        /// <para>一个输出表，其中包含每个输入要素缓冲区的每组汇总要素的汇总字段。该表将包含以下属性字段：
        ///   <bulletList>
        ///     <bullet_item>Join_ID - 与添加到输出要素类的 ID 字段相对应的 ID。</bullet_item><para/>
        ///     <bullet_item>组字段。</bullet_item><para/>
        ///     <bullet_item>形状汇总字段，例如点数或线条长度。</bullet_item><para/>
        ///     <bullet_item>每个汇总字段对应一个字段。</bullet_item><para/>
        ///     <bullet_item>百分比字段。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Grouped Table")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _Output_Grouped_Table { get; set; } = null;


        public SummarizeNearby SetEnv(object XYDomain = null, object XYResolution = null, object XYTolerance = null, object ZDomain = null, object ZResolution = null, object ZTolerance = null, object extent = null, object geographicTransformations = null, object outputCoordinateSystem = null, object outputZFlag = null, object outputZValue = null, object scratchWorkspace = null, object workspace = null)
        {
            base.SetEnv(XYDomain: XYDomain, XYResolution: XYResolution, XYTolerance: XYTolerance, ZDomain: ZDomain, ZResolution: ZResolution, ZTolerance: ZTolerance, extent: extent, geographicTransformations: geographicTransformations, outputCoordinateSystem: outputCoordinateSystem, outputZFlag: outputZFlag, outputZValue: outputZValue, scratchWorkspace: scratchWorkspace, workspace: workspace);
            return this;
        }

    }

}